/*******************************************************************************
 * 版权：北京润尼尔网络科技有限公司，保留所有版权<br>
 * 版本：v1.0.0<br>
 * 文件：ViewPagePartLibSelectionChangeListener.js<br>
 * 日期：2016年8月19日<br>
 * 作者: 王志远<br>
 * 功能：器件库切换事件侦听器<br>
 * 
 * 修改记录：<br>
 * 日期 描述 更新功能<br>
 ******************************************************************************/

window.makeNamespace(window,"Rainier.UI.V2");

/**
 * 类型名称：Rainier.UI.V2.PartLibSelectionChangeListener<br>
 * 类型功能：器件库切换事件侦听器<br>
 * 接口函数：
 * （1）接收对象选择变化事件
 * Rainier.UI.V2.PartLibSelectionChangeListener.onSelectionChanged
 */
Rainier.UI.V2.PartLibSelectionChangeListener = Rainier.UI.V2.SelectionChangeListener.extend({
	
	NAME : "Rainier.UI.V2.PartLibSelectionChangeListener",
	
	/**
	 * 函数名称：Rainier.UI.V2.PartLibSelectionChangeListener.init<br>
	 * 函数功能：构造函数<br>
	 * 异常信息：无<br>
	 */
	init : function(){
		this._super();
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.SelectionChangeListener<br>
	 * 函数功能：获取侦听器ID号<br>
	 * 函数返回：侦听器实例<br>
	 * 异常信息：无<br>
	 */
	getListenerId : function(){
		return "Rainier.UI.V2.PartLibSelectionChangeListener";
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.PartLibSelectionChangeListener.onSelectionChanged<br>
	 * 函数功能：接收对象选择变化事件<br>
	 * 参数输入：sEvent:String 事件字符串<br>
	 * 参数输入：objSelected:CompositeObject 选中的对象<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	onSelectionChanged : function(sEvent, objSelected) {
		if(sEvent !== Rainier.UI.V2.PartLibSelectionChangeListener.SELECTION_CHANGE_EVENT){
			return;
		}
		
		if(!window.app){
			throw new Error("程序出错，请检测并修改bug！！！");
		}

		var context      = app.getContext();
		var activeEditor = context.getActiveEditor();
		
		if(activeEditor){
			if(activeEditor instanceof Rainier.UI.V2.GraphicalEditor){
				var modelClassName = objSelected.modelClassName;
				var factory        = objSelected.factory;
				var json           = objSelected.json;
				activeEditor.installEditPartFactory(factory);
				if(!activeEditor.getRunStatus()){
					activeEditor.enterCreateState(modelClassName,null,json);
				}
			}
		}
	}
});

/** 常量定义： 器件库面选择变化事件侦听器*/
Rainier.UI.V2.PartLibSelectionChangeListener.SELECTION_CHANGE_EVENT = "part lib selection changed";